Various tools may be used in semiconductor circuit design and validation. Some tools use constrained random verification to test the functionality of complex modern circuit arrangements. When performing constrained random verification, a test bench generates a random (or pseudo-random) set of test vectors which may represent a much wider range of values than possible using fixed sequences. However, arbitrary, random values may not properly stimulate a design in situ. Thus, the random values must be constrained to encapsulate the context of the system or subsystem being tested. The constraints may be hard constraints or soft constraints. A hard constraint is a constraint that must always be met, while a soft constraint is a constraint that should be met if possible, but may be ignored if necessary. Due to the complexity of modern electronic systems, constraint with contradictory or otherwise incompatible values may appear in the same system either due to mistakes by the individual or individuals defining the constraints or interactions between the constraints which are not easy to understand.
Constraints on a random value may take many different forms. A constraint may limit the random value to a fixed range of values spanning a set of values less than a constant or between two constants. The range may also be limited to a single constant value. A constraint may fix a relationship between two or more random variables. Examples of such relationships may include the equation x>y, a=b, or h>k≧m, where the variables are random variables. In some cases, the constraints may combine relationships with other variables and constants, such as x<14<z. Some constraints may use arithmetic operators in the process of defining the constraint. These arithmetic operators may be any type of operator, depending on the operators supported by the active tool, and may involve a mix of constants and multiple random variables. One example of a potential constraint when using arithmetic operators is y+x×z=201. Two constraints that share a common random variable may interact. For example, if a=5 and a=b, then b=5 as well, even if the constraint was not explicitly stated. Such interactions may be referred to as implications. The use of arithmetic operators in constraints may lead to even more complex implications.